/**
 ************************************************************************************************************
 * Class in charge of displaying Debug informations such as Boxes / Spheres / Lines / 2D Lines
 * 2D versions of the lines start at (0,0) being at the top left corner of the screen
 ************************************************************************************************************
 * @file RBRenderPassDebug.h
 ************************************************************************************************************/

#ifndef __RBRENDERPASSDEBUG__H__
#define __RBRENDERPASSDEBUG__H__

#ifdef  HEADER_ONCE
#pragma HEADER_ONCE
#endif

#ifdef  HEADER_MSG
#pragma HEADER_MSG(RBRenderPassDebug.h)
#endif

/************************************************************************************************************
 * Includes
 ************************************************************************************************************/
#include "RBMain/RBVector.h"
#include "RBMain/RBHandle.h"

/************************************************************************************************************
 * Forward declarations
 ************************************************************************************************************/
class RBRenderer;
class RBCamera;
RBDeclareHandle(RBBVolume);

/************************************************************************************************************
 * Class
 ************************************************************************************************************/

namespace RBRenderPassDebug
{
    void            Init        (RBRenderer* pRenderer);
    void            Release     ();

    void            Add3DLine            (const float3& vStart, const float3& vEnd, const RBColor& color);
    void            Add3DLine            (const float3& vStart, const float3& vEnd, const RBColor& colorStart, const RBColor& colorEnd);
    void            AddSphere            (const float3& vPos, float radius, const RBColor& color);
    void            AddFrustum           (const RBCamera& camera, const RBColor& color);
    void            AddOBB               (RBBVolumeHandle bv, const RBColor& color);
    void            add_aabb             (float3 center, float3 extents, const RBColor& color);

    void            Render              (RBRenderer* pRenderer);

};

/************************************************************************************************************/

#endif // __RBRENDERPASSDEBUG__H__
